1. Field of the Invention
The disclosure relates generally to error checking and correcting (ECC) techniques, and, more particularly to methods and systems for error checking and correcting (ECC) in a memory module.
2. Description of the Related Art
Error checking and correcting (ECC) or error correction code checking is a data checking and error correcting technique applicable to memory modules, used for checking whether data transmitted to a memory module is correct, and can be used for correcting data error. When errors occur in data, error correction code checking can autonomously correct errors, or request systems to retransmit data. Thus, normal operation of a system can be ensured, and data errors will not cause a machine crashing. The transmitted data is usually encoded as an error correction code (data information, redundant information and parity data can also be included) at the transmitting end prior to transmission in advance. When data with an error correction code is received at the receiving end, by using an error correction code, correct data will be recovered even when random errors generated during the transmission process of the data. Identically, in data storage systems, the stored data is usually encoded as an error correction code prior to data being stored in advance. When random error is generated during the storing process of the data, by using an error correction code, correct data can be recovered. Common error correction codes are BCH (Bose, Ray-Chaudhuri, and Hocquenghem) codes and RS (Reed-Solomon) codes, for example. BCH codes are usually used for the data storage of flash memory, while RS codes are usually used for the data storage of optical disc.
Generally, to enhance overall performance, a system controller may be employed with multiple channel structures such as multiple flash memory chips to help with computing, wherein, each channel is equipped with an error correction module for performing autonomous error correction to its data which is transmitted. However, conventional error correction module only equipped with limited autonomous error correcting capability. For example, error correction code with data fault tolerant quantity of 6 bits can only be used for error correction of data bit less than or equal to 6 bits. When error bit quantity is greater than 6 bits, the error correction module is not only unable to correct error, but also increases data error occurring in the transmitted data. Therefore, to provide better error correction performance, each channel can be equipped with an error correction module of a higher data fault tolerance quantity for error correction. However, an error correction module of a higher data fault tolerance quantity usually occupies more space and is more costly, thereby not only increasing hardware costs and complexity, but also making it not suitable for considerable quantities of use.